<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>promise-catch</title>
</head>
<body>
    <script>
        // 可以用catch指定失败的回调
        //           promise对象.catch(失败的回调)

        // then 方法 promise对象.then(成功的回调, 失败的回调)
        //           promise对象.then(成功的回调)

        let p = new Promise((resolve,reject)=>{
            reject('ok');
        })

        // 如果第一个then没有指定失败的处理函数，那么失败的结果会向下传递，直到有失败处理函数进行处理为止。没有就报错
        // p.then(value=>{
        //     return value;
        // })
        // .then(value=>{
        //     console.log('第二个then中的value：',value);
        // },reason=>{
        //     console.log('第二个失败的处理函数:' + reason);
        // })

        p.then(value=>{

        }).then(value=>{

        }).then(value=>{ 

        })
        .catch(e=>{
            console.log('我是catch： ',e);
            // catch的返回值情况跟then规则一致
            // 1. 返回非Promise对象的数据
            // 2. throw xxx
            // 3. 返回promise对象
            // throw 123;
            return new Promise((resolve,reject)=>reject('999'))
        })
        .then(value=>{
            console.log('我是成功的:', value);
        },reason=>{
            console.log('我是失败的：', reason);
        })
        // 开发中的应用：一般then方法我们只用来指定成功的回调函数。不去指定失败的处理函数。
        // 我们会在最后使用catch方法对于失败的情况进行统一处理
    </script>
</body>
</html>